import java.util.Arrays;

public class AlgoritmKruskal {
	private GrafOrientat graf;
	Muchie[] e;

	AlgoritmKruskal(GrafOrientat graf) {
		this.graf = graf;
	}

	private void afisare(GrafOrientat g) {
		for (int i = 0; i < g.getNIncidenta(); i++)
			System.out.println("arc de la " + e[i].from + " la " + e[i].to);
	}


	public String getRezultat() {
		int n = graf.getNIncidenta(), nrvarfuri = 1;
		GrafOrientat gr = new GrafOrientat();
		// graf.afisareListaInc();
		e = new Muchie[n];
		e = graf.getListaInc();

		Arrays.sort(e, 0, graf.getNIncidenta());
		
		int [] cc = new int[graf.getNrVarfuri()];
		for (int i = 0; i < graf.getNrVarfuri(); i++)
			cc[i] = i;
		int m = graf.getNIncidenta();
		for (int i=0; i < m;i++)
		{
			if(cc[e[i].from] != cc[e[i].to])
			{
				gr.addListaInc(e[i]);
				int c1 = cc[e[i].to];
				for (int j = 0; j < graf.getNrVarfuri(); j++)
					if (cc[j] == c1)
						cc[j] = cc[e[i].from];
			}
		}
		
		return gr.getArboreMinim();
	}

}
